SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE Procedure [dbo].[SP_TTRENC_ANUL_I01]  
/*-------------------------------------------------------*/  
/*---Empresa              : OFISIS S.A.                --*/  
/*---Cliente              : OFISIS                 --*/  
/*---Sistema              : Tesoreria                  --*/  
/*---M÷dulo               : Empresa                    --*/  
/*---Programa             : Anulaci¸n Renovaci¸n Letras--*/  
/*---                       ( Clientes )               --*/  
/*---       CTAS POR COBRAR           --*/  
/*---Script               : TTRENC_ANUL.sql            --*/  
/*---Nombre SP            : SP_TCRENP_ANUL_D01         --*/  
/*---Desarrollado por     : Eduardo Vivar Pomiano      --*/  
/*---Fecha Creaci÷n       : 02/02/2000                 --*/  
/*---Base Datos           : Microsoft Sql Server       --*/  
/*---Versi÷n              : 7.0                        --*/  
/*---Invoca a SP          :                            --*/  
/*-------------------------------------------------------*/  
/*-------------------------------------------------------*/  
/*---Modificado 1 por     : Maribel Julca Rodriguez    --*/  
/*---Fecha Modificaci©n   : 21/04/2005                 --*/   
/*---Detalle Modificaci©n : ingreso de los campos CO_USUA_CREA, CO_USUA_MODI  --*/  
/*-------------------------------------------------------*/  
/*---------------------------------------------------------*/
/*---Modificado 2 por     : Carlos Marquez Escobar       --*/
/*---Fecha Modificaci÷n   : 20/10/2005                 	 --*/
/*---Detalle Modificaci÷n : Manejo de Extornos			 --*/
/*---------------------------------------------------------*/
/*-------------------------------------------------------*/  
/*---Comentarios                                       --*/  
/*---                                                  --*/  
/*---                                                  --*/  
/*-------------------------------------------------------*/  
/*-------------------------------------------------------*/  
/*---Drop Proc SP_TTRENC_ANUL_I01                      --*/  
/*---Grant Execute on SP_TTRENC_ANUL_I01 to public     --*/   
/*---SP_TTRENC_ANUL_I01                                --*/  
/*-------------------------------------------------------*/  
 @ISCO_EMPR      TD_VC_002,  
 @ISCO_USUA_MODI TD_VC_008_USUA,  
 @ISCO_CLIE      TD_VC_020,  
 @ISNU_RENO      TD_VC_008,  
 @ISCO_TIPO_OPER TD_VC_003,  
 @IDFE_ANUL      TD_DT_001,  
 @ISCO_UNID_CONC TD_VC_003,  
 @IDFE_RENO      TD_DT_001
	As
Declare @CSCO_TIPO_DOCU   TD_VC_003,   
		@CSNU_DOCU_CLIE   TD_VC_020,  
		@CSNU_LETR_CLIE   TD_VC_020,  
		@OSTI_DOCU        TD_VC_003,  
		@CNIM_RENO_MDOC   TD_NU_016_004,  
		@CSCO_ESTA_ORIG   TD_VC_003,  
		@VSCO_ESTA_LETR   TD_VC_003,  
		@VNNU_SECU        TD_IN_001,  
		@VSCO_TIPO_INAN   TD_VC_003,     
		@VSST_GEAS_ANUL   TD_VC_001,  
		@VSCO_TIPO_OPE1   TD_VC_003,

		@OSNU_ASTO			TD_VC_010,
		@VSST_INTE_BACH	TD_VC_001,
		@VSST_ASTO_RESU	TD_VC_001,
		@VSTI_OPNI_CARG	TD_VC_001,
		@VSTI_OPNI_ABON	TD_VC_001
  
 Begin Tran SP_TCRENO_CLIE_I01
	/**-----Verifica si es interface en Linea s/n------*/
	Select @VSCO_TIPO_INAN = CO_TIPO_OPER, @VSST_GEAS_ANUL = ST_GEAS_ANUL,
			@VSST_INTE_BACH = ST_INTE_BACH,  
			@VSTI_OPNI_CARG = CO_TIPO_OPEG, @VSTI_OPNI_ABON = CO_TIPO_OPER   
	From   TMPARA_TESO   
	Where  CO_EMPR = @ISCO_EMPR  

     
	Declare CU_TCRENO_CLIE_I01_1 cursor  
	For  
	Select CO_TIPO_DOCU, NU_DOCU_CLIE, NU_LETR_CLIE, IM_RENO_MDOC, CO_ESTA_ORIG  
	From   TDRENO_CLIE  
	Where  CO_EMPR = @ISCO_EMPR  
	And CO_UNID_CONC = @ISCO_UNID_CONC  
	And CO_CLIE = @ISCO_CLIE  
	And NU_RENO = @ISNU_RENO  
	And FE_RENO = @IDFE_RENO  
	
	Open  CU_TCRENO_CLIE_I01_1  
	Fetch CU_TCRENO_CLIE_I01_1  
	Into  @CSCO_TIPO_DOCU, @CSNU_DOCU_CLIE, @CSNU_LETR_CLIE, @CNIM_RENO_MDOC, @CSCO_ESTA_ORIG  
	
	While (@@FETCH_STATUS = 0)  
	Begin  
		If (@@FETCH_STATUS < 0)  
		Begin  
			RAISERROR 20001 'FIN DE ARCHIVO'  
			Close CU_TCRENO_CLIE_I01_1  
			Deallocate CU_TCRENO_CLIE_I01_1  
			Rollback tran SP_TCRENO_CLIE_I01
			Return  
		End  
		
		
		Exec SP_TTDOCU_CNTB_Q01 6, @OSTI_DOCU OUTPUT  
		
		If @CSNU_LETR_CLIE is not Null  
		Begin  
			Select @VSCO_ESTA_LETR = CO_ESTA_DOCU   
			From   TMLETR_CLIE  
			Where  CO_EMPR = @ISCO_EMPR  
			And NU_LETR_CLIE = @CSNU_LETR_CLIE  
		
			Update  TMLETR_CLIE   
			Set     CO_ESTA_DOCU = 'ANU',   
			CO_USUA_MODI = @ISCO_USUA_MODI,   
			FE_USUA_MODI = GETDATE()  
			Where   CO_EMPR = @ISCO_EMPR  
			And NU_LETR_CLIE = @CSNU_LETR_CLIE  
			
			If @@error <> 0  
			Begin   
				Close CU_TCRENO_CLIE_I01_1  
				Deallocate CU_TCRENO_CLIE_I01_1  
				Rollback Tran SP_TCRENO_CLIE_I01  
				Return    
			End  
		
			Select @VNNU_SECU = ISNULL(Max(NU_SECU),0) + 1  
			From   TDKARD_DOCU  
			Where  CO_EMPR = @ISCO_EMPR   
			
			Insert Into TDKARD_DOCU (CO_EMPR, NU_SECU,CO_TIPO_DOCU, NU_DOCU_CLIE, CO_CLIE, CO_ESTA_ACTU,  
			CO_ESTA_DOCU, NU_CORR_MODI, CO_USUA_CREA,FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI )   
			Values ( @ISCO_EMPR, @VNNU_SECU , @OSTI_DOCU, @CSNU_LETR_CLIE, @ISCO_CLIE,  
			'ANU', @VSCO_ESTA_LETR,  @VNNU_SECU, @ISCO_USUA_MODI,GETDATE(), @ISCO_USUA_MODI, GETDATE() )  
			
			If @@error <> 0  
			Begin   
				Close CU_TCRENO_CLIE_I01_1  
				Deallocate CU_TCRENO_CLIE_I01_1  
				Rollback Tran SP_TCRENO_CLIE_I01  
				Return    
			End  
		End           
		Else  
		Begin  
		
			If @CSCO_TIPO_DOCU != @OSTI_DOCU  
			Begin  
				Update TMDOCU_CLIE   
				Set    CO_ESTA_DOCU = @CSCO_ESTA_ORIG,   
				NU_RENO = NULL,  
				IM_PAGA = IM_PAGA - ISNULL(@CNIM_RENO_MDOC,0),  
				CO_USUA_MODI = @ISCO_USUA_MODI,   
				FE_USUA_MODI = GETDATE()  
				Where  CO_EMPR = @ISCO_EMPR  
				And CO_TIPO_DOCU = @CSCO_TIPO_DOCU  
				And NU_DOCU_CLIE = @CSNU_DOCU_CLIE   
				If @@error <> 0  
				Begin   
					Close CU_TCRENO_CLIE_I01_1  
					Deallocate CU_TCRENO_CLIE_I01_1  
					Rollback Tran SP_TCRENO_CLIE_I01  
					Return    
				End  
			End  
			Else  
			Begin  
				Select @VSCO_ESTA_LETR = CO_ESTA_DOCU   
				From   TMLETR_CLIE  
				Where  CO_EMPR = @ISCO_EMPR  
				And NU_LETR_CLIE = @CSNU_DOCU_CLIE  
				
				Update  TMLETR_CLIE   
				Set  CO_ESTA_DOCU = @CSCO_ESTA_ORIG,   
				NU_RENO = NULL,  
				IM_PAGA = IM_PAGA - ISNULL(@CNIM_RENO_MDOC,0),  
				CO_USUA_MODI = @ISCO_USUA_MODI,   
				FE_USUA_MODI = GETDATE()  
				Where   CO_EMPR = @ISCO_EMPR  
				And NU_LETR_CLIE = @CSNU_DOCU_CLIE  
				
				If @@error <> 0  
				Begin   
					Close CU_TCRENO_CLIE_I01_1  
					Deallocate CU_TCRENO_CLIE_I01_1  
					Rollback Tran SP_TCRENO_CLIE_I01  
					Return    
				End  
		
				Select @VNNU_SECU = ISNULL(Max(NU_SECU),0) + 1  
				From   TDKARD_DOCU  
				Where  CO_EMPR = @ISCO_EMPR  
				
				Insert Into TDKARD_DOCU (CO_EMPR, NU_SECU,CO_TIPO_DOCU, NU_DOCU_CLIE, CO_CLIE, CO_ESTA_ACTU,  
				CO_ESTA_DOCU, NU_CORR_MODI, CO_USUA_CREA,FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI )  
				Values ( @ISCO_EMPR, @VNNU_SECU , @OSTI_DOCU, @CSNU_DOCU_CLIE, @ISCO_CLIE,  
				@CSCO_ESTA_ORIG,  @VSCO_ESTA_LETR, @VNNU_SECU, @ISCO_USUA_MODI,GETDATE(), @ISCO_USUA_MODI, 
GETDATE())    
		
				If @@error <> 0  
				Begin  
					Rollback Tran SP_TCRENO_CLIE_I01  
					Return  
				End      
		
			End  
		End  
		
		Fetch CU_TCRENO_CLIE_I01_1   
		Into @CSCO_TIPO_DOCU, @CSNU_DOCU_CLIE, @CSNU_LETR_CLIE,   
		@CNIM_RENO_MDOC, @CSCO_ESTA_ORIG  
	
	End  
	
	Close CU_TCRENO_CLIE_I01_1  
	Deallocate CU_TCRENO_CLIE_I01_1  
	
	SELECT @VSCO_TIPO_INAN = CO_TIPO_OPER, @VSST_GEAS_ANUL = ST_GEAS_ANUL  	FROM   TMPARA_TESO   
	WHERE  CO_EMPR = @ISCO_EMPR  
	
	If @VSST_GEAS_ANUL = 'N'  
		Select @VSCO_TIPO_OPE1 = @VSCO_TIPO_INAN  
	Else      
		Select @VSCO_TIPO_OPE1 = @ISCO_TIPO_OPER  
	

	-- Si la Fecha de Anulacion es Mayor --E X T O R N O--  --
	If  @IDFE_RENO < @IDFE_ANUL And Month( @IDFE_RENO ) != Month( @IDFE_ANUL )
		Update  TCRENO_CLIE   
		Set    TI_SITU = 'EXT', CO_TIPO_OPER = @VSCO_TIPO_OPE1,  
		CO_USUA_MODI = @ISCO_USUA_MODI,   
		FE_USUA_MODI = GETDATE()  
		Where   CO_EMPR = @ISCO_EMPR  
		And CO_UNID_CONC = @ISCO_UNID_CONC  
		And CO_CLIE = @ISCO_CLIE  
		And NU_RENO = @ISNU_RENO  
		And FE_RENO = @IDFE_RENO  

	Else
	
		Update  TCRENO_CLIE   
		Set  TI_SITU = 'ANU', CO_TIPO_OPER = @VSCO_TIPO_OPE1,  
		CO_USUA_MODI = @ISCO_USUA_MODI,   
		FE_USUA_MODI = GETDATE()  
		Where   CO_EMPR = @ISCO_EMPR  
		And CO_UNID_CONC = @ISCO_UNID_CONC  
		And CO_CLIE = @ISCO_CLIE  
		And NU_RENO = @ISNU_RENO  
		And FE_RENO = @IDFE_RENO  
	
	If @@error <> 0  
	Begin   
		Rollback Tran SP_TCRENO_CLIE_I01  
		Return    
	End  
	


	/**-----Verifica si se genera asientos Resumidos ------*/	
	Select @VSST_ASTO_RESU = Max(IsNull( t1.ST_ASTO_RESU, 'S'))      
	From   TMOPRC_RESU t1 , TDTIPO_OPER t2      
	Where  t2.CO_EMPR = @ISCO_EMPR And      
	t2.CO_TIPO_OPER = @ISCO_TIPO_OPER And      
	t1.CO_EMPR = t2.CO_EMPR And      
	t1.CO_OPRC_CNTB = t2.CO_OPRC_CNTB   

	/**-----Fin de la Validacion de Asientos Resumidos e Interfase en Bach ------*/	
    If	@VSST_INTE_BACH = 'N' AND @VSST_ASTO_RESU = 'N' AND 
		@ISCO_TIPO_OPER != @VSTI_OPNI_CARG AND @ISCO_TIPO_OPER != @VSTI_OPNI_ABON And
		@IDFE_RENO < @IDFE_ANUL And Month( @IDFE_RENO ) != Month( @IDFE_ANUL )
	Begin
			
		/*-----Optiene el Numero de Asiento -----*/				
		EXEC SP_TTULTI_ASTO_Q01 @ISCO_EMPR, @ISCO_USUA_MODI, @ISCO_UNID_CONC, @VSCO_TIPO_OPE1, @IDFE_ANUL, @OSNU_ASTO 
OUTPUT  
		IF (@@ERROR != 0)      
		Begin  
			RollBack Tran  SP_TTAMAR_NCCA_D01
			Return  
		End  

	End  


	Insert Into TTRENC_ANUL (CO_EMPR, CO_UNID_CONC, CO_CLIE, NU_RENO, FE_RENO, CO_TIPO_OPER, FE_ANUL,  NU_ASTO,
		ST_CONT, CO_USUA_CREA,FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI)  
	Values (@ISCO_EMPR, @ISCO_UNID_CONC, @ISCO_CLIE, @ISNU_RENO, @IDFE_RENO, @VSCO_TIPO_OPE1,  @IDFE_ANUL,  @OSNU_ASTO,
		'N', @ISCO_USUA_MODI,GETDATE(), @ISCO_USUA_MODI, GETDATE())  
	
	If @@error <> 0  
	Begin  
		Rollback Tran SP_TCRENO_CLIE_I01  
		Return  
	End  
	
commit Tran SP_TCRENO_CLIE_I01  
   
/*------------------------ Fin ------------------------------*/


GO
